问题标签 [dagre-d3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
d3.js - 如何绘制一个固定轴的图形布局
我正在尝试绘制 y 轴坐标基于时间的图形布局 - 是否有任何已知的算法可以实现这一点?我研究了 dagre,但似乎排名系统完全基于网络中的边缘。
多个节点可能具有相同或相似的 Y 坐标,因此想法是水平间隔节点以避免节点重叠,同时保持平衡的布局。有点像附加的图像(未显示所有边缘)。根据 Reingold & Tilford 或 Sugiyama 算法,最好尽量减少重叠边缘。有任何想法吗?我已经尝试使用 D3 强制导向布局并固定 y 坐标,它确实有效(尽管有点跳跃),但这种方法的规模不会超过几百个节点。我需要处理最多 5000 个节点和 5000 个边,这意味着实际渲染很可能需要使用 html 画布而不是 svg。
更新:下面应该更好地了解我想要实现的目标(实际上需要一些边缘交叉,但这是一般的想法)。
以上可以从以下 JSON 生成:
javascript - 更改 SVG 内容时保留 d3 缩放状态?
我正在使用 d3 渲染一些东西,并使用d3.zoom
鼠标进行缩放。它有效,但我还需要定期更改 svg 的内容(进行完整$('svg').html($('svg').html())
调用,因为我的 SVG 包含 HTML)。
问题是当我这样做时,我失去了缩放状态。我试图通过存储缩放变换并在更新后重新应用它来跟踪它,但它不起作用。
这是我的尝试,使用 dagre-d3 示例图。
简而言之,这就是我正在做的事情:
dagre-d3 - 如何在不重新渲染图形的情况下更新 dagreD3 节点样式
有没有办法改变节点的样式而不必重新渲染图形,就像下面的最后一个代码块一样?
javascript - 修复 IE11 中 DagreD3 边缘箭头填充
DagreD3提供了出色的图形网络布局,并集成到 D3 以进行显示,但边缘箭头在旧 Web 浏览器(例如 IE11)中无法正确显示。箭头标记在 IE11 中显示,没有填充颜色。
使用 IE11 查看DagreD3 样式演示时可以看到这一点。缺少填充的箭头以红色圈出。
javascript - dagre / dagre-d3 / d3.js 的悬停效果
这是我的第一篇文章,希望有人可以帮助我解决这个问题......
您可以在 jsfiddle 示例中看到的内容是使用我正在使用的工具制作的。所有节点和边(链接)的定义都是由我们的工具生成的(“VAR STATES = ..”和“g.setEdge”等)(工具提示在这里不起作用,请忽略)
在选择“allnodes”(鼠标悬停)中,我只能选择当前节点(d3.select(this),但不能选择在SELECTIT中称为名称的对象)
我想要达到的目标:
1.)像这里的“鼠标悬停”效果:http ://cs.brown.edu/people/jcmace/d3/graph.html?id=small.json
我可以在“鼠标悬停”方法中选择影响节点名称:
-> dagrejs/graphlib 的 API 文档在这里找到:https ://github.com/dagrejs/graphlib/wiki/API-Reference
2.) 选择链接时的“鼠标悬停”效果(包括父节点和子节点)
jsfiddle:https ://jsfiddle.net/kraab/n9mgo74j/32/
提前致谢!
javascript - 为什么我不能将图表添加到动态插入的 svg 元素?
我有一个简单的图表如下:
但是必须svg
像上面那样在 HTML 代码中硬编码元素吗?我不能动态插入吗?
现在我不知道如何在幕后工作d3
和dagre
运作,但是,据我所知,我不应该这样做!这是因为当我调用它时:
一旦上面的代码完成执行,(据我所知)一个svg
元素被插入到文档中,并且与 HTML 代码中硬编码的元素相同......所以从现在开始应该不会有任何后续- 在两种情况之间执行 JS 代码?
然而事实并非如此。即使我svg
在构造和(试图)插入图形之前插入元素,这也会失败:
我究竟做错了什么?如何将图形插入到动态构造的svg
元素中?
javascript - 如何将节点连接到组而不是子节点?
我正在使用“D3”和“dagre”库创建一个带有嵌套节点的图形。
我想将节点“1 级”连接到“中级”,然后将“中级”连接到“3 级”。
但是当我使用“g.setEdge”时,出现以下错误:
无法设置未定义的属性“等级”
d3.js - 如何在 D3/dagre-D3/javascript 中创建决策树/流程图?
所以我想创建一个如下所示的问题流程图: 不确定最好的起点是……这是有向图吗?其中一些最终被真正隔开,并且看起来不太适合像这样的“流程”:https ://observablehq.com/@d3/force-directed-graph
我见过的最好的例子是一个非 D3 库(yworks),但它似乎要花费 15,000 美元: 这是我见过的唯一一个相关的 StackOverflow,它只引用了 yworks:我可以创建一个流程图(没有树形图)使用 D3.js 也许还有这个 dagre-d3 示例:http: //jsfiddle.net/armyofda12mnkeys/9L50of2c/2/
我想添加一些很酷的可选内容:
*我还希望能够控制 Circles 上的 css,比如根据该节点的数据,在某些情况下,有些会变绿或变红。
*每个边缘箭头我还想添加 onHovers 事件,所以会出现一个工具提示来显示实际规则,例如“if(Question1 == A || B)”
*使节点/边缘可拖动或“有弹性”(如果被拖动,它们会弹回原始位置)。听起来很花哨,但有时如果规则过于拥挤(因为智能自动布局),用户可能会使用此功能,并且他们想拖动东西以查看箭头指向的位置。