我正在尝试向我的强制D3图添加一些摘要统计信息。我可以使用console.log(d)看到该数组,但是当我尝试使用最简单的javascript时,似乎无法从数组中提取值。以下是相关代码:
function fade(opacity) {
return d => {
node.style('stroke-opacity', function (o) {
const thisOpacity = isConnected(d, o) ? 1 : opacity;
console.log(d)
var new_data = d3.nest()
.key(function(j) { return j.group;})
.rollup(function(j) {
return d3.sum(j, function(g) {return g.contribution_total; });
}).map(d); //.entries(d);
//new_data
console.log(new_data)
var expensesByName = d3.nest()
.key(function(g) { return g.group; })
.entries(d);
//.forEach(node);
console.log(expensesByName )
var contributionsByName = d3.nest()
.key(function(g) { return g.contribution_total; })
.entries(d);
//.forEach(node);
//console.log(contributionsByName)
这里是现场尝试的住所:http://people.ischool.berkeley.edu/~jennifer.p/capstone/slider/add_winner_try1.html
我所有的console.log()尝试(除了console.log(d))都返回一个空数组。查看图片:
最终,我试图按组(民主党/共和党)显示总捐款额,然后我想计算一个“获胜者”百分比(#个节点为“ W”,而“#为空”),但现在我真的需要帮助来访问数据周期。我去了这几个小时,看起来很简单,任何想法都值得赞赏。 TIA!
答案 0 :(得分:0)
您需要收集不透明度回调内部连接的节点,并在设置后使用列表计算d3.next
function fade(opacity) {
return d => {
var connectedNodes = [];
node.style('opacity', function (o) {
var connected = isConnected(d, o);
if (connected) { connectedNodes.push(d); }
return connected ? 1 : opacity;
});
var new_data = d3.nest()
.key(function(j) { return j.group;})
.rollup(function(j) {
return d3.sum(j, function(g) {return g.contribution_total; });
}).entries(connectedNodes);
console.log('new_data', new_data);
link.style('opacity', o => (o.source === d || o.target === d ? 1 : opacity));
};
}
当您同时拥有click
处理程序时,为什么还要使用fade(1)
的{{1}}处理程序?
releasenode