Ubuntu graphviz'sfdp'无效

时间:2015-12-11 16:42:01

标签: python-3.x ubuntu package updates graphviz

我正在尝试制作一些 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。这对于s​​fdp来说是坏消息,它抱怨“错误:remove_overlap:Graphviz不是用三角测量库构建的”并且无法生成它在编译时创建的漂亮输出--with-gts

查看评论(关于错误报告),有人说 Graphviz 的上游源保存在link,但我找不到要下载的新版本。

在包list上,我有最新的一个(可信赖的2.36)。

其他人遇到sfdp问题?

任何帮助将不胜感激!

3 个答案:

答案 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包
  • graphviz_2.38.0-13_amd64.deb
  • 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
  • 蟒-pygraphviz_1.3.1-1_amd64.deb

我使用了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

错误不再出现虽然我很难说这些图表更好。