- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图突出显示所有连接的链接及其目标节点的链接,直到布局结束。
第一级突出显示可以轻松实现,如下 -
点击节点时,调用highlight_paths(1)
;
function highlight_paths(stroke_opacity) {
return function(d,i){
d.sourceLinks.forEach(function(srcLnk){
d3.select("#link"+srcLnk.id).style("stroke-opacity", stroke_opacity);
});
d.targetLinks.forEach(function(srcLnk){
d3.select("#link"+srcLnk.id).style("stroke-opacity", stroke_opacity);
});
}
}
但是我还无法正确编写递归算法来获取每个连接的源节点和目标节点的所有 sourceLinks 和 targetLinks。
所有想法都值得赞赏!
谢谢。
最佳答案
我正在查看 sankey 布局代码,并找到了用于遍历布局节点的广度优先搜索实现。关于 BFS 的一些知识在这里 - http://www.cse.ohio-state.edu/~gurari/course/cis680/cis680Ch14.html
纯粹基于此,这里的函数可以突出显示从单击的节点开始的两个方向的所有路径 - 向前(目标)和向后(源)
希望这对某人有帮助!
工作示例 -
http://bl.ocks.org/git-ashish/8959771
https://observablehq.com/@git-ashish/sankey-diagram
function highlight_node_links(node,i){
var remainingNodes=[],
nextNodes=[];
var stroke_opacity = 0;
if( d3.select(this).attr("data-clicked") == "1" ){
d3.select(this).attr("data-clicked","0");
stroke_opacity = 0.2;
}else{
d3.select(this).attr("data-clicked","1");
stroke_opacity = 0.5;
}
var traverse = [{
linkType : "sourceLinks",
nodeType : "target"
},{
linkType : "targetLinks",
nodeType : "source"
}];
traverse.forEach(function(step){
node[step.linkType].forEach(function(link) {
remainingNodes.push(link[step.nodeType]);
highlight_link(link.id, stroke_opacity);
});
while (remainingNodes.length) {
nextNodes = [];
remainingNodes.forEach(function(node) {
node[step.linkType].forEach(function(link) {
nextNodes.push(link[step.nodeType]);
highlight_link(link.id, stroke_opacity);
});
});
remainingNodes = nextNodes;
}
});
}
function highlight_link(id,opacity){
d3.select("#link-"+id).style("stroke-opacity", opacity);
}
关于d3.js - d3 Sankey - 突出显示从开始到结束的所有连接路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19195888/
plotly 库有一些漂亮的 sankey 图 https://plotly.com/python/sankey-diagram/ 但数据要求您传递源/目标对的索引。 link = dict(
我试图在 Sankey diagram 中绘制 3 个集群之间的患者流量.我有一个 pd.DataFrame counts使用 from-to 值,见下文。要重现此 DF,here是 counts d
下面sankey图中字体的白色阴影是否可以去除? import plotly.graph_objects as go fig = go.Figure(go.Sankey(
我想使用 highcharter 包在 R 中绘制桑基图。我在格式化时遇到问题。这是示例。 # devtools::install_github("jbkunst/highcharter") libr
想知道是否有人可以帮忙找出为什么这个桑基图不起作用。我很确定我遵循了正确的语法和约定来使用该模块。因为这个我一直用头撞 table 。 import plotly.offline data_trace
我用 R 中的 rChars 包做了一个桑基图。 但是我想添加一个功能,当我们移动到链接或目标节点时,它会在工具提示中显示源节点的所有名称(或在图形右上角的新框)。例如,当我们移动到节点“target
我创建了一个 d3 Sankey 图。我面临的问题是我无法拖动节点。这是节点的创建方式: var node = svg.append("g").selectAll(".node") .d
Here是 Sankey 图的jsfiddle: 我正在尝试修改链接的颜色,以便每个链接的颜色实际上是从其源节点颜色到其目标节点颜色的渐变。 (假设不透明度将保持 0.2 或 0.5,具体取决于鼠标是
我正在使用 d3.js 的 Sankey 插件。有没有办法影响节点的自动放置? 如果你比较下面两张图片。 自动生成桑基图:https://files.secureserver.net/0s3DEU5s
我正在寻求为时间 1 的 5 个节点和时间 2 的 5 个节点之间的流制作大量桑基图。我希望每次都以相同的顺序绘制节点,无论节点或流的大小如何。然而,其中一些图表是用乱序的节点绘制的。我试图动态计算预
我希望在 R Markdown 中使用 HTML 小部件/Javascript 创建一个交互式 Sankey 图,所以我正在考虑使用 networkD3 package .我希望利用的主要交互性是单击
是否可以使用 sankey 按名称排序?例如: 示例: https://jsfiddle.net/Khrys/1s3shf2m/ google.setOnLoadCallback(drawChar
问题 1:我无法在拖动事件上更新 d3-sankey 链接。我正在尝试复制与此类似的 d3 垂直和水平拖动事件:https://bl.ocks.org/d3noob/5028304 当使用拖动事件时,
我想向 Plotly Sankey 图 ( https://plot.ly/python/sankey-diagram/ ) 中的每个节点添加节点计数,使其看起来像红色箭头引用的计数。 这可能吗?我无
我在 R 中创建了一个 Sankey 图,使用 networkD3包,我想保存为静态图像,使用代码而不是单击“导出”-->“另存为图像...”。 我尝试过的当前代码(以 this Sankey 图为例
我想知道如何在 plotly 中将包名称添加到 Sankey 图中。通过捆绑,我理解一列中的节点。从 plotly 教程: import plotly.graph_objects as go fig
我正在通过 plotly 绘制桑基图来比较不同的观察分类。但是,我对两个以上的分类有一些问题,其中每个分类中的观察顺序在每个节点的输入和输出之间发生变化。 我使用的代码如下: def pl_sanke
在他的d3 Sankey Diagram page上,Mike Bostock 说“该算法将来可以改进,比如尽量减少链接交叉”。 我想投入一些时间并做到这一点,但我不确定是否要开始。有人对如何实现这一
我正在按照本教程制作桑基图 https://bost.ocks.org/mike/sankey/ 当节点和链接太多时,它不会绘制任何内容,这不是圆的问题。 它会说 我有 349 个节点和 1776 个
我正在尝试使用 d3 sankey plugin 创建桑基图具有动态运输数据。它在大多数情况下都工作得很好,除非我得到这样的数据集: [{"DeparturePort":"CHARLESTON","A
我是一名优秀的程序员,十分优秀!