Graphviz 使图形人性化/可读(500个节点,1600条边)

Graphviz 使图形人性化/可读(500个节点,1600条边),graphviz,dot,graph-visualization,Graphviz,Dot,Graph Visualization,我决定学习点语言,它看起来很棒。我决定做一个项目,为RPM构建一个图表。我扫描了所有的食谱来构建RPM包,还添加了关于所需补丁和导入的信息。目前,我的图形的节点数不到500个,边数超过1600个,其大小应稳定+/-50-100个节点/边 以下是我现在拥有的: (sfdp) (点)[片段] (twopi) 前两个比最后一个可读性更强 详情: 包裹装在黑色边框的盒子里 补丁位于橙色边框框+橙色边中 导入位于红色边框框+红色边中 没有单个根包节点。我们可以说有几个顶级(根)包节点,4-10个节点

我决定学习点语言,它看起来很棒。我决定做一个项目,为RPM构建一个图表。我扫描了所有的食谱来构建RPM包,还添加了关于所需补丁和导入的信息。目前,我的图形的节点数不到500个,边数超过1600个,其大小应稳定+/-50-100个节点/边

以下是我现在拥有的:

  • (sfdp)
  • (点)[片段]
  • (twopi)
前两个比最后一个可读性更强

详情:

  • 包裹装在黑色边框的盒子里
  • 补丁位于橙色边框框+橙色边中
  • 导入位于红色边框框+红色边中
  • 没有单个根包节点。我们可以说有几个顶级(根)包节点,4-10个节点包(节点),它们导入了大部分包
  • 有独立的包(节点),没有依赖项,也没有依赖项
  • 补丁程序只能(主要)由单个包节点使用
  • 并非所有包节点都有补丁。我想说的是,包的一小部分节点都有它们
  • 导入文件可以包含在大部分包节点中(例如,所有包节点的1/3)
  • 我有rankdir=“TB”(上下)
  • 我增加了边缘的重量(包->补丁)。这意味着补丁节点更接近它们的包节点
  • 最好尽量减少覆盖节点的边数。这使得图表很难阅读
在这种情况下,对图形布局配置和算法使用有什么建议吗?

令人印象深刻的图形! 我会试试如果你

  • 给边缘一点透明度
  • 实际上,让它们长一点。我知道这会使图形变得更大,但它可以使它在视觉上更清晰,例如,如果你要打印它,你最终减少的字体大小可能会被结构更好的显示所抵消
  • 使用节点边框的浅色版本填充节点
  • 使节点非常小,只给它们索引号。然后创建一个图例,将颜色+索引号与实际内容相匹配。这可能违背了图表的目的,但仍然值得一试。对于初学者来说,只需去掉标签,画一个小小的彩色圆圈。不应该花费太长时间,您可能会看到一些以前看不到的结构属性。如果您发现任何有用的信息,请尽可能减少节点上的信息,直到找到一个好的折衷方案

哦,我也从来没有阻止GraphViz在节点上绘制边…

在您的代码中,您使用了多少次迭代?对我来说,第一个版本是最好的,也是我用于大型图表的工具。我总是被卡住,因为即使更多的迭代意味着更清晰,也意味着更多的时间来渲染。你能刷新你的图片吗?