0

我是 Protovis 的新手,尽管它不再处于开发阶段,而 D3 是较新的软件。但是,出于各种原因,我使用 Protovis 的节点链接树来显示我的数据,所以我更喜欢坚持使用 Protovis,但是如果有人想到我还没有遇到过的 R 包(除了 dendextend, ggplot2、d3network 等)让我使用 R 而不是 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.
4

1 回答 1

0

networkD3是继任者,d3Network更有能力,可能适合您的需求。特别是当前的 dev 版本(截至 2017.09.06 的 v0.4.9000)具有treeNetwork非常强大的新功能,包括显式设置每个单独节点和链接的颜色的能力。我们很高兴收到反馈,因为它仍在开发中。

于 2017-09-06T12:52:33.323 回答