आर

2015-02-13 8 views
6

में rCharts sankey आरेख में नोड्स का रंग बदलें मैंने rCharts का उपयोग करके संके आरेख बनाया है। यहां मेरे कोड का उदाहरण दिया गया है। डाटा इस URL (http://timelyportfolio.github.io/rCharts_d3_sankey/example_build_network_sankey.html)आर

library(devtools) 
library(rjson) 
library(igraph) 

devtools::install_github("ramnathv/rCharts") 

library(rCharts) 

g2 <- graph.tree(40, children=4) 
V(g2)$weight = 0 
V(g2)[degree(g2,mode="out")==0]$weight <- runif(n=length(V(g2)[degree(g2,mode="out")==0]),min=0,max=100) 
E(g2)[to(V(g2)$weight>0)]$weight <- V(g2)[V(g2)$weight>0]$weight 

while(max(is.na(E(g2)$weight))) { 
    df <- get.data.frame(g2) 
    for (i in 1:nrow(df)) { 
    x = df[i,] 
    if(max(df$from==x$to)) { 
     E(g2)[from(x$from) & to(x$to)]$weight = sum(E(g2)[from(x$to)]$weight) 
    } 
    } 
} 

edgelistWeight <- get.data.frame(g2) 
colnames(edgelistWeight) <- c("source","target","value") 
edgelistWeight$source <- as.character(edgelistWeight$source) 
edgelistWeight$target <- as.character(edgelistWeight$target) 

sankeyPlot2 <- rCharts$new() 
sankeyPlot2$setLib('http://timelyportfolio.github.io/rCharts_d3_sankey') 
sankeyPlot2$set(
    data = edgelistWeight, 
    nodeWidth = 15, 
    nodePadding = 10, 
    layout = 32, 
    width = 960, 
    height = 500 
) 

sankeyPlot2 

यह Sankey आरेख का परिणाम है पर आधारित है। sankey diagram

इस मामले में, मुझे नोड्स का रंग बदलने की जरूरत है। ऐसा इसलिए है क्योंकि मुझे संख्या 2 और 7 जैसे कुछ नोड्स को हाइलाइट करने की आवश्यकता है। इसलिए, परिणाम जो मैं चाहता हूं वह है कि संख्या 2 और 7 में लाल रंग होता है और अन्य नोड्स में ग्रे जैसे रंग होते हैं।

मैं इस मुद्दे को कैसे संभाल सकता हूं?

उत्तर

7

मैं जावास्क्रिप्ट बारे में ज्यादा पता नहीं है, इसलिए सुधार की संभावना हो सकती है, लेकिन आप इस जोड़कर रंग सेट कर सकते हैं:

sankeyPlot2$setTemplate(
    afterScript = " 
<script> 
    d3.selectAll('#{{ chartId }} svg .node rect') 
    .style('stroke', 'none') 
    .style('fill', function(d){ 
     return('#999999') 
    }) 
    d3.select('#{{ chartId }} svg .node:nth-child(2) rect') 
    .style('fill', function(d){ 
     return('#ff0000') 
    }) 
    d3.select('#{{ chartId }} svg .node:nth-child(7) rect') 
    .style('fill', function(d){ 
     return('#ff0000') 
    }) 
    d3.selectAll('#{{ chartId }} svg path.link') 
    .style('stroke', function(d){ 
     if (d.source.name == 2 | d.source.name == 7) { 
     return('#ff0000'); 
     } else { 
     return('#999999'); 
     } 
    }) 
</script> 
") 
sankeyPlot2 

result

(similar)

+0

धन्यवाद आप अपनी मदद के लिए! मेरे पास एक और प्रश्न है। क्या मैं आपकी विधि का उपयोग कर लिंक के रंग सेट कर सकता हूं? – kmangyo

+0

हां, मेरा संपादन देखें। पीएस: विधि मूल रूप से @timelyportfolio से है - http://stackoverflow.com/questions/25412223/adding-color-to-sankey-diagram-in-rcharts – lukeA

+0

यह वास्तव में अच्छा है! आपको बहुत - बहुत धन्यवाद! – kmangyo