【问题标题】:Graphviz egde addition conundrumGraphviz egde 加法难题
【发布时间】:2026-01-24 08:25:02
【问题描述】:

我正在尝试使用 Graphviz 制作图像,以说明一些涉及向现有图形添加一些边的过程。基本图的顶点和边保持在原位至关重要。

我尝试使用 [constraint=false] 添加我的新边,但无论我添加多条边,都会为基础图和新图获得不同的布局。我尝试的另一种方法几乎没有显示它是为带有所有额外边缘的图形运行点,然后手动删除额外的线 - 仍然没有骰子。

我要画的图是这样的:

graph G{
overlap=scale;
node [weight=.2,height=.1];
edge [len=2.1];
3--2 [constraint=false];
4--1 [constraint=false];
5--3 [constraint=false];
6--1 ;
6--2 ;
6--3 ;
6--4 ;
6--5 ;
7--1 ;
7--2 ;
7--3 ;
7--4 ;
7--5 ;
8--1 ;
8--2 ;
8--3 ;
8--4 ;
8--5 ;
} 

Any help will be greatly appreciated.

【问题讨论】:

  • 您可以尝试在其上运行 dot 并使用 dot 输出选项吗?这应该包括文件中所有内容的布局信息,这可能允许您在添加额外边缘时根据自己的喜好调整布局。
  • @Gian:我试过了,但它不起作用。无论我做什么,布局都是随机变化的。
  • 您需要为运行dot 启用“无布局模式”,其中包含文件中的布局信息。
  • @Gian:也许不是,我实际上无法判断,因为结果完全过大,而且我在 Ghostview 中看不到其中的大部分。
  • @Gian:我该怎么做?

标签: graphviz dot neato


【解决方案1】:

我想你可以试试:

3--2 [style="invis"];
4--1 [style="invis"];
5--3 [style="invis"];

然后:

3--2 [style="bold"];
4--1 [style="bold"];
5--3 [style="bold"];

展示 - 并强调 - 新的优势。

invis 的节点和边未显示,但仍用于计算布局。

【讨论】:

  • 这听起来就像我想要的!太感谢了。我试试看。
  • 当然,我只是没有时间测试它;今天会努力做到的。
【解决方案2】:

除了 Graphviz,还有许多 GUI 图形分析工具可让您运行布局算法并手动定位事物。您可以固定节点位置,甚至颜色或更改添加边缘的宽度以使其突出。这些任务在 NodeXL (C#) 中是微不足道的,这是一个将网络分析集成到 Excel 2007/2010 中的出色开源工具(免责声明:我是它的顾问)。

这是您在NodeXL 中可视化的图表,以及另一张带有红色新边缘的图像。

要创建第二个图像,只需在 NodeXL 中打开“边缘”工作表,然后将数据粘贴到前三列中,如下所示:

3   2   red
4   1   red
5   3   red
6   1
6   2
6   3
6   4
6   5
7   1
7   2
7   3
7   4
7   5
8   1
8   2
8   3
8   4
8   5

您可以下载graphml 文件here,其中包括您的数据和您可以导入NodeXL 的节点坐标。

还有大量其他开源 GUI 工具可以可视化图形,例如 Gephi (Java) 和 Cytoscape (Java),而 PajekUCINetyEdTom Sawyer 是一些专有的替代品。

【讨论】: