问题描述
我正在尝试创建家谱。我找到了一个出色的脚本来实现此目的,并且我理解了作为其基础的Python代码。可以在以下位置找到该脚本:https://github.com/adrienverge/familytreemaker/blob/master/familytreemaker.py
我在第322-342行撞墙。该脚本执行成功,但是输出限制为两层。当前树有四代,因此这种压缩使图形无法解密。
def output_descending_tree(self,ancestor):
"""Outputs the whole descending family tree from a given ancestor,in DOT format.
"""
# Find the f@R_404_6447@t households
gen = [ancestor]
print('digraph {\n' + \
'\tnode [shape=Box];\n' + \
'\tedge [dir=none];\n')
for p in self.everybody.values():
print('\t' + p.graphviz() + ';')
print('')
while gen:
self.display_generation(gen)
gen = self.next_generation(gen)
print('}')
我认为我的问题很大一部分是因为家庭很大,所以节点很多。如果使用家庭的一个子集,则树的渲染不会出现任何问题。
似乎我需要在331-332行附近添加一些参数,例如:
'\tgraph [nodesep=1,levelsgap=1,ratio=expand,size="10,20"];\n' + \
或者,向“ node and/or
edge`”中添加其他参数。
我在这里找到了文档:https://www.graphviz.org/doc/info/attrs.html,并且尝试了一些不同的参数,但没有取得很大的成功。该图确实改变了大小,但是内容变得模糊而不是扩大。我尝试更改的参数是:dimen
,esep
,fontsize
,height
,levels
和ratio
。
这是一个很有帮助的线程:Change Size (Width and Height) of Graph (GraphViz & dot),但是我的解释器不喜欢这种语法(特别是:nodesep = 1.5;
和ranksep = 1
)。
任何建议都将不胜感激。谢谢!
编辑:我已经附加了我的输出的匿名版本。这个版本比我撰写本文时最初拥有的版本压缩程度更低。也许我同时对代码所做的更改实现了我的目标?不知道是谁做的,但是谢谢大家的反馈。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)