我已经到了一半,请看编辑
好的,这是我的问题,我正在生成一个python模块的图形,包括所有带有它们的函数/方法/类的文件。
我想安排它,节点聚集在它们的父节点周围,目前一切都在一个巨大的水平行上,这使得事物的宽度> 50k像素,并且让svg转换器失败(仅渲染了图表的一半)。
我经历了docs,但找不到任何似乎可以做到的伎俩。
所以问题是:
有没有一种简单的方法可以做到这一点,还是我必须自己布局整个事情? :/
修改
感谢安德鲁斯评论我有正确的布局,现在唯一的问题是它有点“紧凑”......所以现在的问题是,如何解决这个问题?
答案 0 :(得分:34)
我已经提到了影响当前布局的所有最重要的参数,然后是这些参数的建议值。尽管如此,我怀疑你可以通过应用其中一些建议来获得你想要的布局。
减少边缘重量,例如[weight = 0.5];这将使 边缘更长,造成紧张 你目前看到的群集 图表'扇出'。
摆脱节点边界,node_A [颜色=无;形状=明文]; 特别是对于椭圆形节点,a 占总数的很大一部分 节点空间'未使用'(即未使用) 显示节点标签)。
显式设置字体大小 节点(节点边界是 放大使它们围绕着 节点文本,表示该字体 给定的文本大小和数量 节点对其有显着影响 尺寸); [fontsize = 11]应该很大 足够清晰,但也减少 “杂乱”的外表( 默认大小为14)。
增加最小间隔 节点,通过'nodesep';例如,nodesep = 2.0;这将 直接解决您的异议 关于你的图表“也是 紧凑。“('nodesep'和'ranksep' 可能会影响点绘制图形的方式 比任何其他参数更多 节点,边或图。在你的情况下, 看起来你只有两个等级 节点; 'ranksep'设定最小值 不同节点之间的距离 排名 - 它看起来像所有节点 构成你的图表的是 相同等级(少数顶级除外) 中心的节点。)
明确设置总图表尺寸,例如, size =“7.75,10.25”(确保你的 图表适合8.5 x 11页面和 它占据了整个空间)
一个纯粹的美学建议 最多只能帮助你 图出现不那么混乱: 两个边和的默认fontcolor 节点是黑色的。大多数人 图表上的墨水来自这两个 结构(特别是如果你 删除节点边框),所以我会 例如设置节点 (文字)fontcolor或边缘 fontcolor为“蓝色”帮助眼睛 区分两组图 结构。
答案 1 :(得分:6)
如果太紧凑,你会想要弄乱边长。根据图表布局,您有几个选项:
您可能还想弄乱确定群集行为的图形属性 model 。具体来说,尝试子集。我相信这会为你处理 len : http://www.graphviz.org/doc/info/attrs.html#d:model
此外,您可以使用缩放技术删除所有重叠:http://www.graphviz.org/doc/info/attrs.html#d:overlap
答案 2 :(得分:0)
我大约有500个节点,并使用了道格的推荐。
这是我的示例代码(在python中有效):
f = Digraph('companies',filename='companies.gv',
edge_attr={'weight':'1',
'fontsize':'11',
'fontcolor':'blue',
'len':'4'},
graph_attr={'fixedsize':'false',
'bgcolor':'transparent'},
node_attr={'fontsize':'11',
'shape':'plaintext',
'color':'none',
'fontcolor':'black'})
f.attr(layout="neato")
f.attr(nodesep='3')
f.attr(ranksep='3')
f.attr(size='5000,5000')