- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我想(有点)结合 Hierarchical Edge Bundling和 Radial Reingold–Tilford Tree
它看起来有点像这样(请原谅我糟糕的 paint.net 技能)*:
* children 应该在一个弧形中,就像在树中一样。
我已经设置了这个在 HEB 中显示简单数据的 fiddle :https://fiddle.jshell.net/d1766z4r/2/
我已经合并了两种类型的数据(在开头的注释中,这将替换当前变量“classes”):
var classes = [
{"name":"test.cluster1.item1","children": [
{"name": "test.cluster1.item4","imports":["test.cluster1.item2","test.cluster1.item3"]},
{"name": "test.cluster1.item5"}
]},
{"name":"test.cluster1.item2","imports":["test.cluster1.item3"]},
{"name":"test.cluster1.item3"}
];
如果有更好的方法来合并数据,请随意进行相应的更改。
除了更改数据外,我不确定如何继续,因为我是 d3.js 和 javascript 新手,尤其是当它涉及到链接正确的子项(第 4 项)而不是其他(第 1 项)时5).但是,我会考虑一个答案,该答案将显示指向元素 1 的所有子项的链接,以此作为开始开发它的一种方式。
如果可能,请更新此 fiddle 或制作一个新 fiddle 来备份您的代码。当然,我们欢迎任何关于如何进行的建议。
下一步将使用类似于 Collapsible Tree 的方法使这些子项在单击时显示或隐藏。 (也可以随时就此提出建议,但如果我不知道该怎么做,以后可能会是一个新问题),因为我将不得不处理大量数据,首先要为 children 辩护.
最后,每个 child 都可以拥有自己的 child ,但现在 1 行 child 就足够了。我想我稍后再讲。
更新:答案不必是完整的解决方案,每一点(看看我在那里做了什么?)都有帮助!
最佳答案
我可能完全偏离了您的要求,如果是这种情况请澄清。
长话短说:Here根据我从问题中解释的内容,它看起来如何。已添加更多数据进行测试。
分层边捆绑,提供了一种可视化图中非分层边的方法。这是 link如果您还没有找到,请转到在 d3 中实现的论文。
在example通过过滤其他节点仅显示叶节点:
node = node
.data(nodes.filter(function(n) { return !n.children; }))
.enter().append("text")
.attr("class", "node")...
示例中的层次关系在名称中用点表示,因此cluster1是item1、item2和item3的父级。 Here如果我们在附加节点时删除过滤器,它会是什么样子。
现在,我对您的问题的解释是,您想使用 Hierarchical Edge Bundling 来可视化非层次关系(在示例中由导入表示),并使用“Radial Reingold–Tilford”来可视化层次关系。
这是如何做到的:
数据格式需要不更改为您建议的格式。下面应该没问题:
var classes = [
{
"name": "test.cluster1.item1.item4",
"imports": ["test.cluster1.item2", "test.cluster1.item3"]
},
{
"name": "test.cluster1.item1.item5",
"imports": []
}
]
采用 packageImports 函数从节点获取层级边缘:
nodes.forEach(function (d) {
if(d.children && d.name !== "") d.children.forEach(function (i) {
imports.push({
source: map[d.name],
target: i
});
});
});
添加来自 Radial Reingold–Tilford example 的径向对 Angular 线生成器:
var diagonal = d3.svg.diagonal.radial()
.projection(
function(d) {
debugger;
return [d.y, d.x / 180 * Math.PI];
}
);
追加分层边缘路径:
treeLink = treeLink
.data(getHeirarchialEdges(nodes))
.enter().append("path")
.attr("class", "tree-link")
.attr("d", diagonal);
我还添加了 mouseover 和 mouseout 函数以突出显示层次节点,尝试将鼠标悬停在任何父节点上。
关于javascript - d3.js 结合分层边缘捆绑和径向 Reingold–Tilford 树 + 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39150514/
我有一串数字。我需要检查边缘上的数字是否对称,这意味着它们以 2 为模时具有相同的余数。 我已经编写了一个有效的代码,但我对此感到不安,在一些失败之后我想出了这个代码: int PaliPair(ch
我要删除黑色蒙版和人体图像之间的白色边框 图像输入示例: 厚度为1的图像输出: 厚度为2的图像输出: 我尝试了一些在这里找到的具有模糊和阈值的游戏 我还使用此代码查找和绘制轮廓 thickne
这应该是一个在用户悬停时打开的飞出菜单。 这在 Chrome 中工作得很好,我已经尝试了多种方法(使用 CSS :hover,(mousenter)和(mouseleave ) 问题是 - 使用 Ed
我有一个 Apache 服务器 v2.4.43 为我的网站提供服务,我使用一个简单的 .htpasswd,我使用指令“AuthUserFile ”在 .htaccess 中调用它来进行身份验证。 现在
如何仅使用剪辑路径创建波浪边缘? 波浪应该是这样的图像: 最佳答案 您应该通过波函数及其频率生成此剪辑路径。 我用过 cos()在 PHP 中。您可以找到如下链接: https://repl.it/@
我有这张图: digraph G { 1 [label="car"]; 2 [label="x"]; 3 [label="car"]; 4 [label="y"]; 5 [label="cdr"];
我想强制点仅显示节点之间的垂直或水平边缘。 我在帖子 Family tree layout with Dot/GraphViz 中发现了类似的请求,但我不处理树,所以我希望有一个解决方案,无需插入额外
我已经设法让两个直方图重叠,但如果你仔细观察,条形开始倾斜并且没有完全重叠。 我已经调整了线宽和宽度,并没有改善。 我的目标是让所有的条形排列在彼此的顶部,黑边没有歪斜。 有什么办法解决这个问题 这是
我已经设法让两个直方图重叠,但如果你仔细观察,条形开始倾斜并且没有完全重叠。 我已经调整了线宽和宽度,并没有改善。 我的目标是让所有的条形排列在彼此的顶部,黑边没有歪斜。 有什么办法解决这个问题 这是
我一直在与 latex table 搏斗太久了。我需要一个具有居中标题的表格,以及包含可能环绕的文本的正文单元格。由于环绕要求,我使用 p{xxx} 而不是 l 来指定单元格宽度。这导致的问题是单元格
有没有办法平滑转换(平移和旋转)的 BufferedImage 的锯齿状边缘? 测试图像的放大 View : (请注意,这不是将要使用的实际 BufferedImage,仅用于此处演示)。 已使用双线
我在 my page 有一个旋转木马.我的父元素和子元素的边缘都是 flex 的,但是当您按“下一个”或“上一个”并滑动旋转木马时,子元素在移动时不会保持 flex 。我怎样才能避免这种情况? .ho
我在 .boxwrap 和 .lsmlbox + .rsmlbox 之间的嵌套 div 中添加了不必要的空格,这使得无法将 .smlbox + .rsmlbox 与 .box 对齐我相信这是一个比预期
我正在使用 Apple 的 ARKit 制作 AR 应用程序,我想制作盒子的线框轮廓。代码中描述并显示在图片中的那个在盒子的每个面上绘制斜边。它还隐藏了盒子另一侧的角。 Scene Kit 中有没有办
下图仅包含阈值处理后的黑色和白色像素。我在此图像的顶部绘制了一个灰色的旋转矩形。现在我想计算这个旋转矩形内的黑色像素数,但不包括白色矩形矩形外的黑色像素(即白色矩形内的像素数)。 做到这一点的最佳方法
你们如何处理边际 CSS?我所说的边缘是指需要斜体或粗体的单个单词或短语。只用 声明一个“大胆”的类似乎很愚蠢 Bold { font-weight: bold; } 或者斜体,要么! Italic
好的。我知道有几十个类似的线程。我几乎检查了每一个,但找不到可行的解决方案。我试过负边距、最小高度、最大高度、绝对页脚、正文背景颜色,甚至将溢出:隐藏到页面中的所有主要容器。然后将 clearfix
我网站的一部分使用代码使用倾斜边缘: -webkit-clip-path: 多边形(0% 0%, 100% 0%, 81% 100%, 0% 100%) 这在 Chrome 中运行良好,但不适用于任何
我一直在创建这个网站,并且进展顺利。然后我试着给它添加一个模态,但一切都有点走下坡路。问题是在添加模式后,Chrome 中的图像对齐方式发生了变化。它在 Edge 中运行良好。现在我知道这可能是因为
如果我在 Matlab 中使用 image() 命令制作一个 4 x 4 像素的图像,它会将刻度线居中放置在像素的中间。我希望刻度线以像素的左下角为中心。有什么方法可以做到这一点吗? 最佳答案 您可以
我是一名优秀的程序员,十分优秀!