Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pydot在Graphviz中垂直放置节点_Python_Visualization_Graphviz_Pydot - Fatal编程技术网

Python 使用pydot在Graphviz中垂直放置节点

Python 使用pydot在Graphviz中垂直放置节点,python,visualization,graphviz,pydot,Python,Visualization,Graphviz,Pydot,我通过pydot在Python中使用Graphviz。我正在制作的图有许多有向图簇。pydot将它们水平放置在一起,形成非常宽的图像。我如何告诉它输出最大宽度的图像,以便我可以垂直滚动?我不确定您是否能够对数据执行此操作,但如果更改节点插入图形的顺序,则会真正影响生成的图形。如果您不想向Graphviz提供任何订购信息,并且希望Graphviz尝试解决节点的最佳放置以最小化争用,请改用Graphviz的neato。它使用spring模型来确定节点应该放置在哪里 看起来您应该能够在pydot内部使

我通过pydot在Python中使用Graphviz。我正在制作的图有许多有向图簇。pydot将它们水平放置在一起,形成非常宽的图像。我如何告诉它输出最大宽度的图像,以便我可以垂直滚动?

我不确定您是否能够对数据执行此操作,但如果更改节点插入图形的顺序,则会真正影响生成的图形。如果您不想向Graphviz提供任何订购信息,并且希望Graphviz尝试解决节点的最佳放置以最小化争用,请改用Graphviz的
neato
。它使用spring模型来确定节点应该放置在哪里

看起来您应该能够在pydot内部使用
neato
,如:

my_graph.write('my_graph.png', prog='neato', format='png')

请参阅pydot的文档

您可以做几件事

  • 您可以使用“大小”(例如size=“4,8”(英寸))设置图形的最大大小。这将修复最终布局的大小。与点语言中的大多数其他节点、边和图形参数不同,“大小”没有默认值。另外,默认方向是“纵向”,我相信这是您想要的(对于更高或更宽的图形),但是您可能希望明确设置此参数,以防之前将其设置为“横向”

  • “Size”可与“比率””参数(布局纵横比)一起使用,以操纵配置“比率”采用浮动(例如,Ratio=“2.0”)或“自动”或“填充”。(后者告诉graphviz使用“大小”分配的整个图形区域填充

  • 对图形配置影响最大的参数是“nodesep”和“ranksep”。它们是相等“秩”的相邻节点之间的最小水平距离,以及相邻节点秩之间的最小垂直距离。默认值分别为0.25和0.75英寸。到获得所需的配置时,您将希望同时增加nodesep和减少ranksep。渐进迭代应允许您快速收敛于这两个参数的一组值,从而获得所需的配置


  • 按如下方式初始化图形:

    graph=pydot.Dot(graph_type='digraph',rankdir='LR')


    这将设置从左到右的图形方向。通常,使用查找右属性以获得所需内容。

    +1我对pydot文档进行了广泛搜索,直到看到您的答案,我才意识到graphviz文档用作pydot文档。我测试了一些功能和yuo给出的链接中的参数,现在一切都清楚了。很高兴能提供帮助。我记得自己多次在这个问题上绊倒,直到我最终解决了这个问题——这个设置显然应该是默认的IMO,因为在节点中水平打印文本更有用。