如何更改Graphviz输出的高度DOT问题?

问题描述

png image of output here

我正在尝试创建家谱。我找到了一个出色的脚本来实现此目的,并且我理解了作为其基础的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,并且尝试了一些不同的参数,但没有取得很大的成功。该图确实改变了大小,但是内容变得模糊而不是扩大。我尝试更改的参数是:dimenesepfontsizeheightlevelsratio

这是一个很有帮助的线程:Change Size (Width and Height) of Graph (GraphViz & dot),但是我的解释器不喜欢这种语法(特别是:nodesep = 1.5;ranksep = 1)。

任何建议都将不胜感激。谢谢!

编辑:我已经附加了我的输出的匿名版本。这个版本比我撰写本文时最初拥有的版本压缩程度更低。也许我同时对代码所做的更改实现了我的目标?不知道是谁做的,但是谢谢大家的反馈。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)