我有一个很大但不是很大的图,有13个子图簇,包含约100个节点和3,147条边。
Windows上的点崩溃,而Linux上的段错误。
This question建议解决方案是使用neato
,而不是dot
。
但是 ,this page说
请注意这里有一些怪癖...只有DOT和FDP布局方法似乎支持子图
无论放大多远,我的输出都是一个巨大的黑色意大利面条球。因此,我删除了所有消息,但删除了一条,这表明这些子图形似乎是相互嵌套绘制的。
它们绝对不嵌套在源文件中;这是一个示例,其商业敏感名称已更改:
digraph G {
labelloc="t"; // place the label at the top (b seems to be default)
label="XXX message passing";
rankdir = "LR"
newrank = "true"
subgraph cluster_AAA {
label="AAA"
rank="same"
AAA_1
}
subgraph cluster_BBB {
label="BBB"
rank="same"
BBB_1
BBB_2
}
subgraph cluster_CCC {
label="CCC"
rank="same"
CCC_1
CCC_2
CCC_3
}
这在语法上肯定是正确的(之后是边缘)。
因此,似乎该链接页面是正确的:
只有DOT和FDP布局方法似乎支持子图
但 ,看来我也需要整齐的大图。
我有什么选择?
[Updtae]我运行了fdp
并收到以下错误消息
错误:节点“ xxx”包含在两个不可比较的群集“ AAA”和“ BBB”中
这似乎提供了一个线索。确实可以在两个群集中不使用节点名称吗?
如果是这样,解决方案似乎是在节点名称之前加上群集名称...
答案 0 :(得分:1)
所以我没有一般的解决方案来解决您的问题。 但是您看过“火星”吗? 这是一个命令行工具,专门用于具有很大图形的graphviz程序。 您可以在这里找到它:https://github.com/marckhoury/mars