hek*_*ran 13 python visualization graphviz pydot
我通过pydot在Python中使用Graphviz.我正在制作的图表中有许多有向图集.pydot将它们水平放置,使得图像非常宽.如何告诉它输出最大宽度的图像,以便我可以垂直滚动?
dou*_*oug 12
你可以做几件事.
您可以使用"尺寸"设置图表的最大尺寸(例如,尺寸="4,8"(英寸)).这会修复最终布局的大小.与点语言中的大多数其他节点,边和图形参数不同,"大小"没有默认值.此外,默认方向是"纵向",我相信这是您想要的(对于更高而更宽的图形),但您可能希望显式设置此参数,以防它先前设置为"横向".
'Size'可与' ratio '参数(布局纵横比)一起使用来操纵配置.'比率'采用浮动(例如,比率="2.0")或"自动"或"填充".(后者告诉graphviz填充使用'size'分配的整个图形区域.
对图形配置影响最大的参数是" nodesep "和" ranksep ".这些是相等"等级"的相邻节点之间的最小水平距离,以及相邻等级节点之间的最小垂直距离.默认值分别为0.25和0.75英寸.要获得所需的配置,您需要同时增加nodesep并减少ranksep.逐步迭代应该允许您快速收敛这两个参数的一组值,从而为您提供所需的配置.
Mic*_*ler 10
像这样初始化你的图形:
graph = pydot.Dot(graph_type='digraph', rankdir='LR')
这将从左到右设置图形方向.通常,使用graphviz文档查找正确的属性以实现您想要的效果.
我不确定您是否能够对数据执行此操作,但如果更改节点插入图表的顺序,则可能会影响生成的图形.如果您不想向Graphviz 提供任何订购信息,并希望Graphviz尝试解决节点的最佳放置以最大限度地减少争用,请改用Graphviz neato.它使用弹簧模型来确定应放置节点的位置.
看起来你应该可以neato在pydot里面使用:
my_graph.write('my_graph.png', prog='neato', format='png')
Run Code Online (Sandbox Code Playgroud)
请参阅pydot的文档.