我是一名HTML/CSS开发人员,正在研究构建"家庭树"的javascript解决方案,这种解决方案需要以有意义的方式展示婚姻(当然来自家庭以外).
基本上我看着它立足于一个树状图的基础上,d3.js,例如http://bl.ocks.org/4063570,但我在努力寻找任何东西在那里,表示"结婚".
下面是我将基于它的数据的图像:

任何帮助/建议/链接将不胜感激!我只是不知道它是否可能,但是我很乐意使用d3.js,因为它看起来很精致,而且看起来很多功能.
我有一个来自Cyril惊人答案的家谱,但我正在试图弄清楚如何调整它以支持多个合作伙伴.在这种情况下,我添加了一个"情妇"节点,并试图表示"女主人"和"约翰"有一个名为"隐藏的儿子"的孩子.
当前的数据结构如下:
在那里,root对象存储一切.它有一个children数组,其中包含没有父母的最"代".它还包含一个包含这些兄弟对象/节点的子对象的对象.在上面的例子中,这是root.children[2].
我想我将不得不重构数据结构children并注入有关孩子的父母的信息.只是在概念化这个以及线路时遇到了麻烦
最终将是这样的,除了情妇将在左侧:
有没有办法在D3强制导向图中禁用动画?
我正在使用这个例子:https://bl.ocks.org/mbostock/4062045
我想在没有初始动画的情况下渲染图形,即显示其最终位置中的所有节点和链接.
我在用 Javascript 生成好看的家谱时遇到问题。
要求:
我试过的最接近这个:
使用Dagre作为布局引擎的Cytoscape JS,启用曲线样式:出租车边缘。

(随机数据图表,实线为亲子关系,虚线为配偶)
问题是配偶彼此不一致。Dagre 历来支持“等级”作为节点的参数,这意味着您可以强制某些节点处于特定高度(如果愿意,可以将其视为“一代”)。不幸的是,它不再起作用,负责的开发人员也不再从事该项目。这将很好地解决我的问题。
我尝试过但失败的其他事情:
将 dagre 降级到支持排名的旧版本?
还没有获得使用任何版本的 dagre 的等级。
和上面一样的问题,因为dagre-d3是dagre的修改版本,这意味着它不支持按代排序。
yFiles 家谱演示看起来很棒,但很商业化。对于我的目的(希望任何人建立自己的家谱),单个开发人员许可证的成本是 26.000 美元(!?!)。显然不能接受。
我的问题
是否可以像我上面描述的那样垂直对齐我的 cytoscape/dagre 图中的节点?
如果没有,我愿意尝试其他库和其他布局算法。
我正在寻找一个看起来类似于 yFiles 解决方案但使用开源工具的工作示例。
以下url将获得水平方向的树.但是我的要求是使用d3获得垂直方向的树.请为此要求建议正确的有效解决方案.
我是 D3 可视化的新鲜蜜蜂。目前正在为数据沿袭创建 D3 树布局可视化。在数据沿袭流中,可以从多个父节点派生一个子节点。这是示例。在下面的示例中,“DevLead”可能与 2 个经理一起工作。
var data = [
{ "name": "Director", "parent": "null", "depth": 0 },
{ "name": "Manager1", "parent": "Director", "depth": 1 },
{ "name": "Manager2", "parent": "Director", "depth": 1 },
{ "name": "DevLead", "parent": "Manager1", "depth": 2 },
{ "name": "DevLead", "parent": "Manager2", "depth": 2 }
];
Run Code Online (Sandbox Code Playgroud)
获取输出请参考下图。
我希望看到“DevLead”孩子应该只展示一个,并且应该从“Manager1”和“Manager2”派生出来。任何人都可以帮助解决这个问题。
var treeData = [{
"name": "Device",
"parent": "null"
}
];
var treeData2 = [{
"name": "Device",
"parent": "null"
}
];
$(document).ready(function() {
var margin = {
top: 20,
right: 120,
bottom: 20,
left: 120
},
width = 1260 - margin.right - margin.left,
height = 500 - margin.top - margin.bottom;
var i = 0,
duration = 750,
root;
var tree = d3.layout.tree()
.size([height, width]);
var diagonal = d3.svg.diagonal()
.projection(function(d) {
return [d.y, d.x];
});
var svg = d3.select("body").append("svg")
.attr("width", width + …Run Code Online (Sandbox Code Playgroud)我制作了一个树形图结构,它工作得非常好。但现在我想做一个小小的改变却无法做出改变。我想将两个父节点连接到一个子节点...我还尝试实用地向每个节点添加一个工具提示。
例如 - 如果您运行代码,您会更清楚地看到它。我想创建 Hanna 的子节点并标记它将连接到名为“Eric”的子节点。
知道如何实现这一目标吗?
var svg = d3
.select("body")
.append("svg")
.attr("width", 600)
.attr("height", 600)
.append("g")
.attr("transform", "translate(50,50)");
//tree data
var data = [
{ child: "John", parent: "" },
{ child: "Aron", parent: "Kevin" },
{ child: "Kevin", parent: "John" },
{ child: "Hannah", parent: "Anna" },
{ child: "Rose", parent: "Sarah" },
{ child: "Anna", parent: "John" },
{ child: "Sarah", parent: "Kevin" },
{ child: "Mark", parent: "Anna" },
{ child: "Angle", parent: "Sarah" }, …Run Code Online (Sandbox Code Playgroud)^ 这是开始增强图表以获取出生/死亡/姓名数据的目标 - 但让它更灵活地获取它。还要清理数据源。
我正在尝试开发 d3.js 家族图。我有兴趣尝试增强此图表的数据结构,以及标签的添加和空间/设计——如果有一种方法可以为零件提供动态长度以为其提供所需的空间。
我做了这个 jsfiddle http://jsfiddle.net/857edt69/30/
// Create the node rectangles.
nodes.append("circle")
.attr("class", "node")
.attr("r", function(d, i) {
return smallRadius;
})
.style("fill", function(d, i) {
var userName = d.userName;
if (userName) {
userName.toLowerCase()
}
var id = d.id + "-" + userName; //small circles
return "url(#" + id + ")";
})
.attr("id", function(d) {
return d.id;
})
.attr("display", function(d) {
if (d.hidden) {
return "none"
} else {
return ""
};
})
.attr("cx", function(d) {
return …Run Code Online (Sandbox Code Playgroud) d3.js ×9
javascript ×7
svg ×2
tree ×2
charts ×1
css ×1
cytoscape.js ×1
dagre ×1
dagre-d3 ×1
dom ×1
family-tree ×1
force-layout ×1
genealogy ×1
treeview ×1