我想知道是否有一种简单的方法来修改Sankey diagram example,以便顺利过渡到新数据。例如,假设我有不同的数据文件(energy1.json、energy2.json ...)d3如何为第一个数据集绘制桑基图,然后等待,然后重新排列盒子部署以表示第二个数据集?
发布于 2014-03-21 00:49:21
这是可能的。这里有一种使用csv文件的方法。在这里工作的桑基:https://www.betterment.com/resources/investment-strategy/portfolio-management/portfolio-diversification/
var portfolioValues =[];
}portfolioValues.push(项);graph.nodes.push({ "name":d.source });graph.nodes.push({ "name":d.target });graph.links.push({源: portfolioValuesi.source,目标: portfolioValuesi.target,值: portfolioValuesi.valuesstartingAllocation });});//构造sankey sankey .nodes(graph.nodes) .links(graph.links)更新并将用户输入传递给更新函数。
$(".sankey-slider").bind("slider:changed",function (event,data) { slideValue = data.value;updateData(parseInt(slideValue));});
var newLinks = [];portfolioValues.forEach(function(p,i) { newLinks.push({ source: p.source,target: p.target,value: p.valuesallocation });});graph.links = newLinks;sankey .nodes(graph.nodes) .links(graph.links) .size(width,height) .layout();
发布于 2013-03-12 10:11:40
由于节点的自动定位包括在连通图中尝试最小化链接距离的部分,这是一个np优化问题,因此任何类型的优化器都可能从一个最小值跳到另一个最小值,从而导致布局的跳跃。因此,保证平稳过渡是不可能的。
最接近的可能解决方案可能是在两个输入数据集之间进行线性插值,从而生成一系列图形,这些图形(取决于数据)或多或少地平滑地从一个两个过渡到另一个。
希望这能有所帮助。
https://stackoverflow.com/questions/13603832
复制相似问题