标签: family-tree

家谱软件中的循环

我是一些家庭树软件的开发者(用C ​​++和Qt编写).在我的一位客户向我邮寄错误报告之前,我没有遇到任何问题.问题是客户有两个孩子和自己的女儿,因此,他因错误而无法使用我的软件.

这些错误是我处理家族图的各种断言和不变量的结果(例如,在走一个循环之后,程序声明X不能同时是Y的父亲和祖父).

如何在不删除所有数据断言的情况下解决这些错误?

c++ graph cycle assertions family-tree

1594
推荐指数
14
解决办法
23万
查看次数

你如何在d3.js中创建一个家谱?

我目前正在进行一项小型家谱实验,并希望实现一个简单的家谱,如下图所示.

到目前为止,最好的搜索结果只产生了一个例子,其中一个孩子只能有一个父节点.但我需要的是能够在实体(从父亲到母亲)和节点与其他链接(从子节点到父母链接)之间建立链接.目前我没有固定的数据模式.

我为此选择了d3.js 因为它看起来能够胜任这项工作.我只是不知道如何开始甚至从哪里开始.关于d3.js的教程仅涵盖条形图等标准图表.

我希望有人可以帮助我.

这就是结果的样子

javascript charts genealogy family-tree d3.js

54
推荐指数
3
解决办法
3万
查看次数

使用深度优先搜索渲染动态创建的族图而不重叠?

我想生成这个:

在此输入图像描述

使用此数据结构(ID是随机的,顺便说一下,不是顺序的):

var tree = [
    { "id": 1, "name": "Me", "dob": "1988", "children": [4], "partners" : [2,3], root:true, level: 0, "parents": [5,6] },
    { "id": 2, "name": "Mistress 1", "dob": "1987", "children": [4], "partners" : [1], level: 0, "parents": [] },
    { "id": 3, "name": "Wife 1", "dob": "1988", "children": [5], "partners" : [1], level: 0, "parents": [] },
    { "id": 4, "name": "son 1", "dob": "", "children": [], "partners" : [], level: -1, "parents": [1,2] },
    { "id": …
Run Code Online (Sandbox Code Playgroud)

javascript graph genealogy family-tree

48
推荐指数
5
解决办法
2170
查看次数

家谱算法

我正在努力为一个介绍级别的CS课程设置一个问题集,并提出一个问题,从表面上看,似乎很简单:

您将获得一份包含父母姓名,出生日期和死亡日期的人员名单.你有兴趣找出谁在他们一生中的某个时刻是父母,祖父母,曾祖父母等等.设计一个算法,用这个信息作为一个整数来标记每个人(0表示这个人从来没有过孩子,1表示该人是父母,2表示该人是祖父母,等等.)

为简单起见,您可以假设族图是DAG,其无向版本是树.

这里有趣的挑战是你不能只看树的形状来确定这些信息.例如,我有8位曾祖父母,但由于我们出生时没有一个人活着,在他们的一生中,他们中没有一个是伟大的曾祖父母.

我能解决这个问题的最佳算法是在时间O(n 2)中运行,其中n是人数.这个想法很简单 - 从每个人开始一个DFS,找到在该人死亡日期之前出生的家谱中最远的后代.但是,我很确定这不是问题的最佳解决方案.例如,如果图形只是两个父母及其n个孩子,那么问题可以在O(n)中平凡地解决.我希望的是一些算法要么胜过O(n 2),要么运行时参数化在图形的形状上,这使得它对于宽图形来说很快,在最坏的情况下优雅地降低到O(n 2)案件.

algorithm tree graph family-tree

45
推荐指数
3
解决办法
1万
查看次数

家庭树布局与Dot/GraphViz

我试图用Dot和GraphViz绘制一个家谱.

这就是我目前拥有的:

# just graph set-up
digraph simpsons {
ratio = "auto"
mincross = 2.0

# draw some nodes
"Abraham"   [shape=box, regular=1, color="blue"] ;
"Mona"      [shape=box, regular=1, color="pink"] ;
"Clancy"    [shape=box, regular=1, color="blue"] ;
"Jackeline" [shape=box, regular=1, color="pink"] ;
"Herb"      [shape=box, regular=1, color="blue"] ;
"Homer"     [shape=box, regular=1, color="blue"] ;
"Marge"     [shape=box, regular=1, color="pink"] ;
"Patty"     [shape=box, regular=1, color="pink"] ;
"Selma"     [shape=box, regular=1, color="pink"] ;
"Bart"      [shape=box, regular=1, color="blue"] ;
"Lisa"      [shape=box, regular=1, color="pink"] ;
"Maggie"    [shape=box, regular=1, color="pink"] ;
"Ling" …
Run Code Online (Sandbox Code Playgroud)

dot graphviz genealogy graph-layout family-tree

40
推荐指数
4
解决办法
2万
查看次数

与多个父母的Javascript/PHP家庭树生成器

是否有现成的PHP,Javascript甚至命令行工具,可以用HTML(最好)构建一个族谱,或者至少为它创建一个图像?多个父母是必需的.我一直在谷歌搜索这几个小时,但无济于事.

例如,Google Organizational Chart是理想的,但它只允许每个节点最多拥有一个父节点.我需要两个父母才有可能.

无论这个网站做什么也将是完美的:http://www.familyecho.com/,但它似乎没有用javascript完成,他们不发布实际创建可视化的代码.

即使连接到外部网站以使用其API来生成可视化也是完美的.

javascript php api jquery family-tree

22
推荐指数
2
解决办法
3万
查看次数

d3.js中的多个家族树中的合作伙伴?

有一个来自Cyril惊人答案的家谱,但我正在试图弄清楚如何调整它以支持多个合作伙伴.在这种情况下,我添加了一个"情妇"节点,并试图表示"女主人"和"约翰"有一个名为"隐藏的儿子"的孩子.

当前的数据结构如下:

在此输入图像描述

在那里,root对象存储一切.它有一个children数组,其中包含没有父母的最"代".它还包含一个包含这些兄弟对象/节点的子对象的对象.在上面的例子中,这是root.children[2].

我想我将不得不重构数据结构children并注入有关孩子的父母的信息.只是在概念化这个以及线路时遇到了麻烦

最终将是这样的,除了情妇将在左侧:

在此输入图像描述

charts family-tree d3.js

22
推荐指数
1
解决办法
2001
查看次数

从谱系数据计算家庭关系

我希望能够计算家谱中两个人之间的家庭关系,给定以下数据模式(从我的实际数据模式简化,仅显示直接适用于此问题的列):

individual
----------
id
gender

child
----------
child_id
father_id
mother_id
Run Code Online (Sandbox Code Playgroud)

通过这种结构,如何计算两个个体id(即堂兄,大叔叔等)之间的关系.

另外,由于实际上有两种关系(即AB可能是侄子而BA是叔叔),如何生成另一种的补充(给定叔叔,并假设我们知道性别,我们如何生成侄子?).这是一个微不足道的问题,前者是我真正感兴趣的.

谢谢大家!

graph-theory relationship genealogy family-tree

18
推荐指数
2
解决办法
7029
查看次数

如何防止在族树生成器中重叠?

我正在创建一个交互式家谱树创建者,不像更简单的版本,它是简单的谱系图表/树.

我的要求(基于familyecho.com)是:

  • 多个合作伙伴与您通常看到的简单2父母对1个孩子.
  • 多个兄弟姐妹
  • 伙伴们不一定需要生孩子
  • 并不总是必须是父母"对",只有一个父亲/母亲

我遇到的问题是:我正在根据"当前"节点/家庭成员生成偏移量,当我越过第一代时,例如2个父母,它重叠.

重叠的示例以及未在同一X轴上绘制的伙伴:

在此输入图像描述

这是我遇到问题的实际app主js文件.这里是一个简化的jsfiddle我创建演示父/偏移问题,但我真的要解决重叠这个一般,除了确保合作伙伴绘制在同一x轴的其他合作伙伴.

我怎样才能解决这个问题以及未来可能发生的重叠冲突?我是否需要某种重绘功能来检测碰撞并在检测到时调整每个块的偏移?我试图让它无缝,所以重绘的次数有限.

计算相对于"上下文"或当前节点的偏移量的示例:

var offset = getCurrentNodeOffset();

                        if ( relationship == RELATIONSHIPS.PARTNER ) {
                            var t = offset.top; // same level
                            var l = offset.left + ( blockWidth + 25 );
                        } else {
                            var t = offset.top - (blockHeight + 123 ); // higher
                            var l = offset.left - ( blockWidth - 25 );
                        }
Run Code Online (Sandbox Code Playgroud)

javascript charts genealogy family-tree jsplumb

18
推荐指数
1
解决办法
2360
查看次数

寻找一个家谱

我正在为我的Web应用程序创建具有HTML5要求的Family Tree功能.我已经搜索并找到了一些JS样本,但我找不到符合我要求的样本.我已经尝试过JIT,Rafael,GoJS等.

我发现这是距离GoJS最近的一个:

GoJS fam-tree选项#1

但这还不够.我需要使用拖放功能将一个成员与另一个成员连接起来.

是否有一些JS可能符合要求或至少像GoJS一样运作?由于我需要为GoJS支付许可证,然后定制它,预算紧张.非常感谢你.

javascript treeview html5 family-tree html5-canvas

17
推荐指数
2
解决办法
2万
查看次数