javascript - 在 D3 捆绑布局中不断改变捆绑着色

标签 javascript svn graphics d3.js bundle-layout

你好,

有没有可能在this中制作 bundle ?可视化:

enter image description here

... 看起来就像 that 中的 bundle 可视化

enter image description here

?

我不知道如何在 d3 中实现这一点。

编辑 1: 显然我必须编写一个自定义插值器。如何在不更改 d3 库的情况下扩展束插值器以在两种颜色之间进行额外的插值?

最佳答案

不幸的是,SVG 或 Canvas 都不支持沿路径描边渐变。我的方式 dependency tree visualization实现如下。对于每条路径:

  1. 从基样条开始(参见 Hierarchical Edge Bundling )。
  2. 转换为分段三次贝塞尔曲线(参见 BasisSpline.segments)。
  3. 转换为分段线性曲线(,折线;参见 Path.flatten)。
  4. 分成等长的线性段(参见 Path.split )。

一旦有了这些线性段,就可以通过沿渐变计算适当的颜色来为每个段着色。因此,第一段绘制为绿色,最后一段绘制为红色,中间段绘制为介于两者之间的颜色。可以通过在等距点对基样条进行采样来组合步骤 2-4,但这需要更多的数学知识。

我的依赖树是在 Canvas 中实现的,但您可以通过为每个固定颜色的段创建单独的路径元素(或线元素)来在 SVG 中实现相同的效果。通过组合相同颜色的段,您可能会获得稍微更好的性能。

关于javascript - 在 D3 捆绑布局中不断改变捆绑着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11981941/

相关文章:

javascript - 响应列和 columnizer 插件 - 如何阻止文本在特定点换行/停止?

javascript - HTML5 Canvas 删除线条

node.js - 有没有任何nodejs项目可以包装svn命令?

visual-studio - 如何将 SVN 添加到 Visual Studio 2012?

c++ - 最佳 GPU 性能的理想位图大小?

javascript - 原型(prototype)中的函数列表

javascript - addons.mozilla.org 验证显示 JavaScript 中的编译时错误

git - 是否可以将 SVN 分支转换为新的 GIT 存储库?

c# - 以编程方式制定图像轮廓(最好是 C#/C++ 编码,或伪编码)

graphics - 用于绘制线条和图形的 Lisp 库