2017-02-15 65 views
0

我是Protovis的新手,儘管它不再處於開發階段,而D3是較新的軟件。然而,我使用Protovis的Node-Link樹顯示我的數據出於各種原因,所以我更願意堅持Protovis,但是如果任何人有一個R包,記住我還沒有遇到過(除了dendextend, ggplot2,d3network等)讓我使用R而不是Protovis請讓我知道。總之,我對Protovis數據的一個片段是這樣的:在protovis節點鏈接樹中更改顏色

var PB = { 
    PBC03013: { 
"103937011_PbUn_2838": 3013, 
"103934808_PbUn_26206": 3013, 
"103930675_PbUn_35145": 3013, 
"103941984_PbUn_52102": 3013, 
"103935933_PbUn_63128": 3013, 
"103966210_PbUn_64271": 3013 
}, 
PBC03018: { 
"103935981_PbUn_53113": 3018, 
"103934997_PbUn_59093": 3018, 
"103936640_PbUn_65330": 3018, 
"103955166_PbUn_112582": 3018 
}, 
... 
} 
} 
I'm trying to change the node colors such that the dots for the elements in PB03013 and PB03018 are different, say "green" and "red", respectively. So all of the PB03013 element dots are green and all of the PB03018 element dots are red. There are 10 nodes in total. I've done a lot of research on this but I'm having such a hard time setting different dot colors I decided to post for help. 

This is the body of my html code: 
var tree = vis.add(pv.Layout.Tree) 
    .nodes(pv.dom(PB).root("PB").nodes()) 
    .depth(127) 
    .breadth(7.25) 
    .orient("radial"); 

tree.link.add(pv.Line); 

tree.node.add(pv.Dot) 
    .fillStyle(function(n) n.firstChild ? "#a1d99b" : "#de2d26"); 

tree.label.add(pv.Label); 

So far, I've been using pv.Color pallets or n.key n.parentNode, etc code alterations to no success. I also set a new variable to force different colors like: 
var re = "", 
    color = pv.Colors.category19().by(function(d) d.parentNode.nodeName) 
    nodes = pv.dom(PB).root("PB").nodes(); 

Then: 

treemap.leaf.add(pv.Panel) 
    .fillStyle(function(d) color(d).alpha(title(d).match(re) ? 1 : .2)) 

The node-link tree code can also be found here: 
http://mbostock.github.io/protovis/ex/tree.html 

Any help is greatly appreciated. 

回答

0

networkD3的前身是d3Network並且更加有能力和可能滿足您的需求。特別是,當前的dev版本(v0.4.9000截至2017.09.06)具有新的treeNetwork功能,其功能非常強大,包括顯式設置每個節點和鏈接的顏色。我們很樂意獲得feedback,因爲它仍在開發中。