我正在尝试制作一些 Networkx Graphviz 图表。
运行后:pos = nx.graphviz_layout(G, prog = 'sfdp')
。发生错误,说:
Error: remove_overlap: Graphviz not built with triangulation library
经过一些 Google 研究后,我发现GTS就是问题所在。 Bug report声明:
Graphviz包是构建的--with-gts。这对于sfdp来说是坏消息,它抱怨“错误:remove_overlap:Graphviz不是用三角测量库构建的”并且无法生成它在编译时创建的漂亮输出--with-gts
查看评论(关于错误报告),有人说 Graphviz 的上游源保存在link,但我找不到要下载的新版本。
在包list上,我有最新的一个(可信赖的2.36)。
其他人遇到sfdp
问题?
任何帮助将不胜感激!
答案 0 :(得分:6)
我知道这个问题适用于Ubuntu,但如果有人在使用 homebrew 的 macOS 上遇到同样的问题,以下内容对我有用:
brew reinstall graphviz --with-gts
答案 1 :(得分:6)
对于ubuntu用户,这就是我让grapvhiz在16.04上工作的方法,从源代码编译graphviz-2.40.1:
首先,需要安装GTS,因为graphviz会查找gts.pc file。
运行
apt-file search gts.pc
通知我,我必须安装' libgts-dev' :
sudo apt install libgts-dev
接下来让pkg-config知道这些文件:
pkg-config --libs gts
pkg-config --cflags gts
在gts库中运行configure to link:
./configure --with-gts --prefix ~
make
make install
SFDP不再引发错误'错误:remove_overlap:Graphviz未使用三角测量库构建'
我从this回答修改的pkg配置的命令行代码。
答案 2 :(得分:1)
我可能让它适用于Ubuntu 14.04,YMMV
直接从https://packages.debian.org/search?keywords=graphviz
下载以下graphviz包我使用了stretch(测试)组中的2.38.0-13版本。 如果存在,您将需要删除32位libltdl:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
fp = fopen("data.txt", "r");
char rida[20][120], str[100];
int i = 0, j = 0;
while (fscanf(fp, "%s", str) != EOF)
{
strcpy(rida[i], str);
i++;
}
size_t n;
for (n = 0; n < 5; n++) {
printf("%s\n", rida[n]);
}
fclose(fp);
}
直接使用
安装软件包sudo apt-get remove libltdl7:i386
您可以预期依赖项错误。我用它们清除了它们:
sudo dpkg -i graphviz_2.38.0-13_amd64.deb
sudo dpkg -i libcgraph6_2.38.0-13_amd64.deb libgvc6_2.38.0-13_amd64.deb libgvpr2_2.38.0-13_amd64.deb libltdl7_2.4.6-0.1_amd64.deb
然后重新安装
sudo apt-get install -f
错误不再出现虽然我很难说这些图表更好。