我是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.